#include <iostream>
#include <algorithm>
#include <vector>

using std::cout;
using std::endl;
using std::for_each;
using std::vector;
using std::copy;
using std::remove_if;

void func(int &value)
{
    cout << value << "  ";
}

bool func3(int value)
{
    return value > 5;
}

void test()
{
    vector<int> vec = {1, 3, 5, 7, 8, 9, 4, 3, 2};
    for_each(vec.begin(), vec.end(), func);
    cout << endl;

    cout << endl;
    //remove_if不能一次将满足条件的元素func删除，但是可以
    //返回待删除元素的迭代器，然后配合erase函数进行使用，
    //就可以达到效果
    auto it = remove_if(vec.begin(), vec.end(), func3);
    vec.erase(it, vec.end());
    for_each(vec.begin(), vec.end(), func);
    cout << endl;
}

int main(int argc, char *argv[])
{
    test();
    return 0;
}

